


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<html lang="en-US">
    <head>
        <title>Trail: Creating a GUI With JFC/Swing (The Java&trade; Tutorials)</title>
        <meta name="description" content="This Swing Java Tutorial describes developing graphical user interfaces (GUIs) for applications and applets using Swing components" />
        <meta name="keywords" content="java programming, learn java, java sample code, java swing, java ui, java user interface, swing components, swing events, swing layout  " />
<style type="text/css">
    .FigureCaption   { 
        margin-left: 1in; 
        margin-right: 1in; 
        font-family: sans-serif; 
        font-size: smaller; 
        text-align: justify;
    }
    #TopBar_bl {
        background: url(../images/java_bar_bl.gif) 0 100% no-repeat;
        width: 100%;
        height: 60px;
    }
    #TopBar_br {
        background: url(../images/java_bar_br.gif) 100% 100% no-repeat;
        width: 100%;
        height: 60px;
    }
    #TopBar_tl {
        background: url(../images/java_bar_tl.gif) 0 0 no-repeat;
        width: 100%;
        height: 60px;
    }
    #TopBar_tr {
        background: url(../images/java_bar_tr.gif) 100% 0 no-repeat;
        width: 100%;
        height: 60px;
    }
    #TopBar {
        background: #35556B url(../images/java_bar.gif);
        margin: 10px 10px 0 10px;
        height:60px;
        min-width:700px;
        color: white;
        font-family: sans-serif; 
        font-weight: bold;
    }
    @media print {
        #BreadCrumbs, #Download {
            display: none;
        }
    }
    #TopBar_right {
        line-height: 14px;
        float: right;
        padding-top: 2px;
        padding-right: 30px;
        text-align: center;
    }
    @media print {
        #TopBar_right {
            display: none;
        }
    }
    #TopBar_right a {
        font-size: 12px;
        margin: 3px;
        padding: 0;
    }
    #TopBar a:visited, #TopBar a:link {
        color: white;
        text-decoration: none;
    }
    #TopBar a:hover, #TopBar a:active  {
        background-color: white;
        color: #35556B;
    }
    #BreadCrumbs {
        padding: 4px 5px 0.5em 0;
        font-family: sans-serif; 
        float: right;
    }
    #BreadCrumbs a {
        color: blue;
    }
    #BreadCrumbs a:visited, #BreadCrumbs a:link {
        text-decoration: none;
    }
    #BreadCrumbs a:hover, #BreadCrumbs a:active {
        text-decoration: underline;
    }
    #PageTitle {
        margin: 0 5px 0.5em 0;
        color: #F90000;
    }    
    #PageContent{
        margin: 0 5px 0 20px;
    }
    .LeftBar_shown {
        width: 13em;
        float: left;
        margin-left: 10px;
        margin-top: 4px;
        margin-bottom: 2em;
        margin-right: 10px;
    }
    @media print {
        .LeftBar_shown {
            display: none;
        }
    }
    .LeftBar_hidden {
        display: none;
    }
    #Footer {
        padding-top: 10px;
        padding-left: 10px;
        margin-right: 10px;
    }
    
    .footertext {
        font-size: 10px;
        font-family: sans-serif; 
        margin-top: 1px;
    }
    
    #Footer2 {
        padding-top: 10px;
        padding-left: 10px;
        margin-right: 10px;
    }
    .NavBit  {
        padding: 4px 5px 0.5em 0;
        font-family: sans-serif; 
    }
    @media print {
        .NavBit {
            display: none;
        }
    }
    #TagNotes {
        text-align: right;        
    }
    
    @media print {
        #TagNotes a:visited, #TagNotes a:link {
            color: #35556B;
            text-decoration: none;
        }
    }
    #Contents a, .NavBit a, #TagNotes a {
        color: blue
    }
    #TagNotes a:visited, #TagNotes a:link,
    #Contents a:visited, #Contents a:link,
    .NavBit a:visited, .NavBit a:link {
        text-decoration: none;
    }
    #TagNotes a:hover, #TagNotes a:active,   
    #Contents a:hover, #Contents a:active,   
    .NavBit a:hover, .NavBit a:active {  
        text-decoration: underline;
    }
    #Contents {
        float: left;
        font-family: sans-serif; 
    }
    @media print {
        #Contents {
            display: none;
        }
    }
    @media screen {
        div.PrintHeaders {
            display: none;
        }
    }
    .linkLESSON, .nolinkLESSON {
        margin-left: 0.5em;
        text-indent: -0.5em
    }
    .linkAHEAD, .nolinkAHEAD, .linkQUESTIONS, .nolinkQUESTIONS   {
        margin-left: 1.5em; 
        text-indent: -0.5em
    }
    .linkBHEAD, .nolinkBHEAD   {
        margin-left: 2.5em;
        text-indent: -0.5em
    }
    .linkCHEAD, .nolinkCHEAD   {
        margin-left: 3.5em;
        text-indent: -0.5em
    }
    .nolinkLESSON, .nolinkAHEAD, .nolinkBHEAD, .nolinkCHEAD,
    .nolinkQUESTIONS {
        font-weight: bold;
        color: #F90000;
    }
    .MainFlow_indented {
        margin-right: 10px;
        margin-left: 15em;
        margin-bottom: 2em;

    }
    .MainFlow_wide {
        margin-right: 10px;
        margin-left: 10px;
        margin-bottom: 2em;

    }
    @media print {
        .MainFlow_indented, .MainFlow_wide {
            padding-top: 0;
            margin-top: 10px;
            margin-right: 10px;
            margin-left: 0;
        }
    }
    h1, h2, h3, h4, h5 {
        color: #F90000;
        font-family: sans-serif;
    }

    h1 {
        font-weight: bold;
        font-size: 20px;
    }

    h2 {
        font-weight: bold;
        font-size: 17px;
    }

    h3 {
        font-weight: bold;
        font-size: 14px;
    }

    h4 {
        font-size: 15px;
    }

    h5 {
        font-size: 12px;
    }


    #ToggleLeft {
        display: none;
    }
    
    .note {
        margin: 0 30px 0px 30px;
    }
    
    .codeblock {
        margin: 0 30px 0px 30px;
    }

    /t

</style>
    </head>
<body>
    <div id=TopBar> <div id=TopBar_tr> <div id=TopBar_tl> <div id=TopBar_br> <div id=TopBar_bl> 
                    <div id=TopBar_right> 
                            <a target="_blank"
                                href="http://java.sun.com/javase/6/download.jsp">Download
                                the JDK</a>
                            <br>
                            <a href="../search.html" target="_blank">Search the
                                Tutorials</a>
                    </div> 
                </div> </div> </div> </div> </div>

    <div class=MainFlow_wide>
        <div id=BreadCrumbs>
            <a href=../index.html target=_top>Home Page</a>
        </div>
        <div class=NavBit>
            <a href=../index.html>&laquo; Previous</a>
            &bull;
            <a href=./TOC.html>Trail</a>
            &bull;
            <a href=./start/index.html>Next &raquo;</a>
        </div>
        <div id=PageTitle><h1>Trail: Creating a GUI With JFC/Swing</h1></div>
        <div id=PageContent>
<p> 
Also known as <em>The Swing Tutorial</em>
</p>

This trail tells you how to create graphical user interfaces (GUIs)
for applications and applets, using the Swing components.


<!--    GETTING STARTED    -->
<p>
<a href="./start/index.html">
<img alt="trail icon" src=../images/uiIcon.gif align=left width=20 height=20 border=0>
<b>Getting Started with Swing</b></a>
is a quick start lesson.
First it gives you a bit of background about the JFC
and Swing.
Then it tells you how to compile
and run programs  
that use Swing components.

<!--    OVERVIEW    -->
<p>
<a href="./learn/index.html">
<img alt="trail icon" src=../images/uiIcon.gif align=left width=20 height=20 border=0>
<b>Learning Swing with the NetBeans IDE</b></a>
is the fastest and easiest way to begin working with Swing.
This lesson explores the NetBeans IDE's GUI builder,
a powerful feature that lets you visually 
construct your Graphical User Interfaces.


<!--   COMPONENTS    -->
<p>
<a href="./components/index.html">
<img alt="trail icon" src=../images/uiIcon.gif align=left width=20 height=20 border=0>
<b>Using Swing Components</b></a>
tells you how to use each of the Swing components &mdash;
buttons, tables, text components, and all the rest.
It also tells you how to use borders and icons.

<!-- CONCURRENCY -->
<p>
<a href="./concurrency/index.html">
<img alt="trail icon" src=../images/uiIcon.gif align=left width=20 height=20 border=0>
<b>Concurrency in Swing</b></a>
discusses concurrency as it applies to Swing programming.
Information on the event dispatch thread and the SwingWorker class are
included.

<!--    MISC   -->
<p>
<a href="./misc/index.html">
<img alt="trail icon" src=../images/uiIcon.gif align=left width=20 height=20 border=0>
<b>Using Other Swing Features</b></a>
tells you how to use actions, timers, and the system tray; how to integrate
with the desktop class, how to support assistive technologies,
how to print tables and text, how to create a splash screen,
and how to use modality in dialogs.

<!--    LAYOUT   -->
<p>
<a href="./layout/index.html">
<img alt="trail icon" src=../images/uiIcon.gif align=left width=20 height=20 border=0>
<b>Laying Out Components Within a Container</b></a>
tells you how to choose a layout manager,
how to use each of the layout manager classes the
Java platform provides,
how to use absolute positioning instead of a layout manager,
and how to create your own layout manager.

<!--    LOOKANDFEEL   -->
<p>
<a href="./lookandfeel/index.html">
<img alt="trail icon" src=../images/uiIcon.gif align=left width=20 height=20 border=0>
<b>Modifying the Look and Feel</b></a>
tells you how to specify the look and feel of Swing components.

<!--  DND --->
<p>
<a href="./dnd/index.html">
<img alt="trail icon" src=../images/uiIcon.gif align=left width=20 height=20 border=0>
<b>Drag and Drop and Data Transfer</b></a>
tells you what you need to know to implement data transfer
in your application.

<!--   EVENTS    -->
<p>
<a href="./events/index.html">
<img alt="trail icon" src=../images/uiIcon.gif align=left width=20 height=20 border=0>
<b>Writing Event Listeners</b></a>
tells you how to handle events in your programs.

<!--    GRAPHICS   -->
<p>
<a href="./painting/index.html">
<img alt="trail icon" src=../images/uiIcon.gif align=left width=20 height=20 border=0>
<b>Performing Custom Painting</b></a>
gives you information on painting your own Swing components.
It discusses painting issues
specific to Swing components,
provides an overview of painting concepts,
and has examples of custom components
that paint themselves.

<p>
<h2>Other UI-Related Trails</h2>
Although this is the main trail for learning about GUIs,
it isn't the only trail with UI-related information.
<ul>
<li>
<a class="TutorialLink" target="_top" href="../2d/index.html">2D Graphics</a>,
which describes the 2D graphics features available in the JDK.
<li>
<a class="TutorialLink" target="_top" href="../sound/index.html">Sound</a>,
which discusses the sound capabilities available in the JDK.
<li>
<a class="TutorialLink" target="_top" href="../deployment/applet/index.html">Java Applets</a>,
which describes API available only to applets.
<li>
<a class="TutorialLink" target="_top" href="../essential/index.html">Essential Classes</a>,
which covers many topics, including properties and
the standard I/O streams.
<li>
The Bonus trail contains
<a class="TutorialLink" target="_top" href="../extra/fullscreen/index.html">Full-Screen Exclusive Mode API</a>, a lesson that describes how to use API introduced in v1.4
to render graphics directly to the screen.
</ul>

        </div>
    <div class=NavBit>
        <a href=../index.html>&laquo; Previous</a>
        &bull;
        <a href=./TOC.html>TOC</a>
        &bull;
        <a href=./start/index.html>Next &raquo;</a>

    </div>
    </div>
    <div id=Footer2>
<hr>
<div id=TagNotes>
    <p class="footertext">Problems with the examples? Try <a target="_blank"
        href=../information/run-examples.html>Compiling and Running
        the Examples: FAQs</a>.
    <br>
    Complaints? Compliments? Suggestions? <a target="_blank"
        href="http://download.oracle.com/javase/feedback.html">Give
    us your feedback</a>.
    </p>
</div> 

<div id=Footer>
<p class="footertext"><a name="license_info">Your use of this</a> page and all the material on pages under &quot;The Java Tutorials&quot; banner,
and all the material on pages under &quot;The Java Tutorials&quot; banner is subject to the <a href="../information/license.html">Java SE Tutorial Copyright
and License</a>.
Additionally, any example code contained in any of these Java
Tutorials pages is licensed under the
<a href="http://developers.sun.com/license/berkeley_license.html">Code
Sample License</a>.
</p>
<table border="0" cellspacing="0" cellpadding="5" summary="">
    <tr>
         <td headers="h1" width="20%">
	 <table width="100%" border="0" cellspacing="0" cellpadding="5">
            <tr>
              <td headers="h1" align="center"><img id=duke src=../images/DukeWave.gif width=55 height=55 alt="duke image"></td>
              <td headers="h2" align="left" valign="middle"><img id=oracle src=../images/logo_oracle_footer.gif width=100 height=29 alt="Oracle logo"></td>
           </tr>
          </table>
          </td>

          <td width="55%" valign="middle" align="center">
		<p class="footertext"><a href="http://www.oracle.com/us/corporate/index.html">About Oracle</a> | <a href="http://www.oracle.com/technology/index.html">Oracle Technology Network</a> | <a href="https://www.samplecode.oracle.com/servlets/CompulsoryClickThrough?type=TermsOfService">Terms of Service</a></p> 
	 </td>
          <td width="25%" valign="middle" align="right">
      		<p class="footertext">Copyright &copy; 1995, 2011 Oracle and/or its affiliates. All rights reserved.</p>
	 </td>
     </tr>     
</table>
</div>
    </div>
    <div class=PrintHeaders>
        <b>Previous page:</b> Beginning of Tutorial
        <br><b>Next page:</b> Getting Started with Swing
    </div>

<!-- Start SiteCatalyst code   -->
<script language="JavaScript" src="http://www.oracle.com/ocom/groups/systemobject/@mktg_admin/documents/systemobject/s_code_download.js"></script>
<script language="JavaScript" src="http://www.oracle.com/ocom/groups/systemobject/@mktg_admin/documents/systemobject/s_code.js"></script>
<noscript> 
A browser with JavaScript enabled is required for this page to operate properly.
</noscript>
 
<!-- ********** DO NOT ALTER ANYTHING BELOW THIS LINE ! *********** -->
<!--  Below code will send the info to Omniture server -->
<script language="javascript">var s_code=s.t();if(s_code)document.write(s_code)</script>

 
<!-- End SiteCatalyst code -->

</body>
</html> 
